#include "LsdInPro.h"
#include "LsdMem.h"
#include "LsdLinkList.h"
#include "LsdEvent.h"
#include "LsdApp.h"
#include "main.h"
#include "hal_tds.h"
#include "LsdEEPROM.h"
#include "hal_temper.h"
#include "LsdIOT_AT.h"
#include "LsdIOTTask.h"
#include "bsp_adc.h"
#include "hal_flow.h"
#include "LsdWaterKeyTask.h"
#include "LsdScreenTask.h"
#include "LsdDisplayTask.h"
#include "hal_InCheck.h"
#include "bsp.h"
#include "LsdLed.h"
#include "LsdOutWater.h"
static uint8_t  firstHeatFlag=0;//第一次加热完成标志 
static uint16_t DevInitFlag = 0;  //初始化时的的标志 大于20代表2s自检完成 大于120代表10s冲洗完成
static uint8_t WaterFlag 		= 0; //0代表第一次补满水未完成 1:第一步补水已完成
static void OnMakeWaterPro(void)     //制水的处理
{
	if(OnGetIOStatus(TYPE_PRESSURE_HIGH_CO2_SW) == 0)//如果高压开关断开
	{
		SODA_PUMP_ON();//增压泵   苏打泵开启
		powerDownSave.curState = 1;
	}
	else
	{
		SODA_PUMP_OFF();//增压泵  苏打泵开启	
		powerDownSave.curState = 2;
	}

}

static void OnHeatModePro(void)  //加热场景的处理    定时开关机
{
	
	uint8_t heatModeStatus = 0;
	uint8_t heatModeflag = 0;
	tsHeatModeSetProp		*p		;	//42	加热场景设置5
	if(gConnectFinish == 0) //离线的情况都要 屏蔽加热场景
	{
		powerDownSave.run_state = 0;//离线状态下就直接变成正常模式
		return;
	}
	
	for(uint8_t i=0;i<5;i++)
	{
		switch(i)
		{
			case 0: p = &powerDownSave.timer_switch_1 ;  break;
			case 1: p = &powerDownSave.timer_switch_2 ;  break;
			case 2: p = &powerDownSave.timer_switch_3 ;  break;
			case 3: p = &powerDownSave.timer_switch_4 ;  break;
			case 4: p = &powerDownSave.timer_switch_5 ;  break;
			default:break;
		}
		if((p->week_select & 0x01) != 0)//如果不等于0 说明需要执行  第0位是0 代表关闭 1：代表开启
		{
			heatModeflag++;
			for(uint8_t j=0;j<8;j++)
			{
					if(p->week_select & (0x01<<j))  
					{
								if(j == (powerDownSave.time_tick.week))//周是相等的
								{
											if(((p->heat_start1.hour == powerDownSave.time_tick.hour) && (p->heat_start1.min <= powerDownSave.time_tick.min)) || (p->heat_start1.hour < powerDownSave.time_tick.hour)  )
											{
												   if(((p->heat_end1.hour == powerDownSave.time_tick.hour ) && (p->heat_end1.min > powerDownSave.time_tick.min)) || (p->heat_end1.hour > powerDownSave.time_tick.hour))
													 {
														heatModeStatus = 1;
													 }
											} 
											if(((p->heat_start2.hour == powerDownSave.time_tick.hour) && (p->heat_start2.min <= powerDownSave.time_tick.min)) || (p->heat_start2.hour < powerDownSave.time_tick.hour)  )
											{
												   if(((p->heat_end2.hour == powerDownSave.time_tick.hour ) && (p->heat_end2.min > powerDownSave.time_tick.min)) || (p->heat_end2.hour > powerDownSave.time_tick.hour))
													 {
														heatModeStatus = 1;
													 }
											}
											if(((p->heat_start3.hour == powerDownSave.time_tick.hour) && (p->heat_start3.min <= powerDownSave.time_tick.min)) || (p->heat_start3.hour < powerDownSave.time_tick.hour)  )
											{
												   if(((p->heat_end3.hour == powerDownSave.time_tick.hour ) && (p->heat_end3.min > powerDownSave.time_tick.min)) || (p->heat_end3.hour > powerDownSave.time_tick.hour))
													 {
														heatModeStatus = 1;
													 }
											}	
								}
					}
			}	
		}
	}
	
	if(heatModeStatus ==1)
	{
		powerDownSave.run_state = 0;//正常模式
	}else if((heatModeflag != 0) &&(gLoabal.setImage == 0))//要等于主界面
 	{
		if(powerDownSave.run_state == 0)//如果是2 这里就不用进入休眠模式了
		{ 
			powerDownSave.run_state = 1;//休眠状态
		}
		
	}
	//如果定时开关机失效  默认就将休眠模式 改为正常模式
	if(heatModeflag == 0)
	{
		if(powerDownSave.run_state == 1)
		{
			powerDownSave.run_state =0;//正常模式
		}
		
		gLoabal.deviceOnOffFlag = 0;//未设置定时开关机
	}
	else
	{
		gLoabal.deviceOnOffFlag = 1;//已经设置定时开关机
	}
	
	
}

static void OnHeatReplenishPro(void)//热罐补水及加热处理
{
	static uint8_t heatState = 0;//热罐状态
//	static uint8_t firstHeatFlag = 0; //0代表第一次加热
	static uint16_t midHeatWaterCnt = 0;//热罐在高液位以下计时
	static uint8_t startHeat = 0;
//	static uint16_t speedHeatCnt = 0;//速热延迟时间
//	float temp = OnReadNTCtemper(NTC_HEAT);
	float temp = 0;
	uint8_t setTemp = 0;
	uint8_t reTemp  = 0;//重新加热温度
	uint8_t reWaterTemp  = 0;//重新补水温度
//#if (QIANG_YING_DEVICE == 0)//俄罗斯广告机
//	powerDownSave.hot_temp_set = 85;//畅饮同逻辑
//#endif	
#if (DEV_HARD_VER == 10000)	
	if(powerDownSave.cock_cnt == DEVICE_HEAT)// || (powerDownSave.cock_cnt == DEVICE_PRO))
	{
		temp = OnReadNTCtemper(NTC_HEAT);//单热只有一个NTC
	}else{
		temp = OnReadNTCtemper(NTC_HEAT_L);//其他已下NTC为准
	}
#else
	temp = OnReadNTCtemper(NTC_HEAT);//单热只有一个NTC
#endif
	
	if(gLoabal.Boiling_Point>powerDownSave.hot_temp_set) //先与沸点比较
	{
		setTemp = powerDownSave.hot_temp_set;
	}else{
		setTemp = gLoabal.Boiling_Point;
	}
//当设定温度大于沸点减5℃时，停止加热温度为沸点减5度
	if(setTemp >= (gLoabal.Boiling_Point-5))
	setTemp = gLoabal.Boiling_Point-5;
	
	reTemp = HEAT_RE_TEMP;
	reWaterTemp = HEAT_RE_WATER;
	{//热罐水已经补满 同时不应该在休眠状态  首次补水完成  低水位以上 热罐液位没有异常
		if((gLoabal.heatSetFlag == 1) && (powerDownSave.run_state != 1) &&(WaterFlag == 1) && (OnGetIOStatus(TYPE_WATER_LOW_HEAT) == 0) \
		&& (powerDownSave.alarm.bits.err_heat_water == 0)) 
		{
			if((temp < setTemp) && (firstHeatFlag == 0))
			{
				if((powerDownSave.energy_set & 0x02) == 2)
				{
					HEAT_PIPE_CTRL_ON();
					powerDownSave.heat_state = 1;//加热开启
//					print_debug("HEAT_PIPE_CTRL_ON 93SSD\r\n");
				}
				else
				{
					HEAT_PIPE_CTRL_OFF();
					powerDownSave.heat_state = 0;//加热保温
//					print_debug("HEAT_PIPE_CTRL_OFF 93SSD\r\n");
				}
			}
			else if(firstHeatFlag == 1)
			{
				if((powerDownSave.energy_set & 0x02) == 2)
				{
					if(temp <=(setTemp-reTemp) || (startHeat == 0)) //当热罐设定温度重新加热的值时，热罐重新开启加热，加热继电器闭合
					{
						startHeat = 0;
						HEAT_PIPE_CTRL_ON();
						powerDownSave.heat_state = 1;//加热开启
//						print_debug("HEAT_PIPE_CTRL_ON 88SSD\r\n");
					}
				}
				else
				{
					HEAT_PIPE_CTRL_OFF();
					powerDownSave.heat_state = 0;//加热保温
//					print_debug("HEAT_PIPE_CTRL_OFF 88SSD\r\n");
				}
			}
			if(temp >=setTemp)
			{
				startHeat = 1;
				firstHeatFlag = 1;
				HEAT_PIPE_CTRL_OFF();
				powerDownSave.heat_state = 0;//加热保温
//				print_debug("HEAT_PIPE_CTRL_OFF\r\n");
			}
		}
		else//休眠模式下
		{
			HEAT_PIPE_CTRL_OFF();//关闭加热 此时界面会切到休眠界面
			powerDownSave.heat_state = 0;//加热保温
		}

		{//加热状态 和加热开关状态变化时就 上报
			if(heatState != powerDownSave.heat_state)
			{
				heatState = powerDownSave.heat_state;
				OnAddIOTList(ROM_ENERGY_SET_WR);  //热水开关上报
				OnAddIOTList(ROM_HEAT_STATE_RW);  //热水状态上报
				IOTDataListTimeOutCnt = 3000;//延迟3s上报
			}
		}
	}
	{//补水逻辑		//低液位补水
		if((gLoabal.heatWaterEn == 1) && (powerDownSave.alarm.bits.err_heat_water == 0))//液位没有异常 热罐液位异常
		{
			if(OnGetIOStatus(TYPE_WATER_HIGH_HEAT) == 1)//溢水位
			{
				HEAT_TANK_IN_OFF();//热罐进水阀关闭补水
				#if (QIANG_YING_DEVICE == 0)//俄罗斯机
				if((powerDownSave.get_water_status & (1<<1)) == 0 )	SODA_PUMP_OFF();//；冷水没有出水就关闭 增压泵//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水	
				#endif		
				print_debug("water over \r\n");
			}
			else if(powerDownSave.curState == WORK_STATUS_F1)//缺水时补水停掉
			{
				HEAT_TANK_IN_OFF();//热罐进水阀关闭补水
				#if (QIANG_YING_DEVICE == 0)//俄罗斯机
				if((powerDownSave.get_water_status & (1<<1)) == 0 )	SODA_PUMP_OFF();//；冷水没有出水就关闭 增压泵//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水	
				#endif	
				print_debug("water lack heatwater stop \r\n");
			}
			#if (QIANG_YING_DEVICE == 0)//俄罗斯机
			else if(powerDownSave.alarm.bits.err_heat_rewater_timeout == 1)//补水超时
			{
				HEAT_TANK_IN_OFF();//热罐进水阀关闭补水
				if((powerDownSave.get_water_status & (1<<1)) == 0 )	SODA_PUMP_OFF();//；冷水没有出水就关闭 增压泵//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水	
				print_debug("water lack heatwater stop \r\n");
			}
			#endif
			else if(((OnGetIOStatus(TYPE_WATER_LOW_HEAT) == 1) || (OnGetIOStatus(TYPE_WATER_MID_HEAT) == 0))  && (powerDownSave.alarm.bits.err_heat_water == 0))//低液位以下或 高液位以下 同时水位没有异常
			{
				if(WaterFlag == 0)
				{
					HEAT_TANK_IN_ON();//热罐进水阀开启补水
					#if (QIANG_YING_DEVICE == 0)//俄罗斯机
					SODA_PUMP_ON();
					#endif	
					print_debug("HEAT_TANK_IN_ON \r\n");
				}else//步进补水
				{
					if(OnGetIOStatus(TYPE_WATER_LOW_HEAT) == 1)//低液位补水
					{
						HEAT_TANK_IN_ON();//热罐进水阀开启补水//补水
						#if (QIANG_YING_DEVICE == 0)//俄罗斯机
						SODA_PUMP_ON();
						#endif	
					}
					else if((OnGetIOStatus(TYPE_WATER_MID_HEAT) == 0))//高液位以下
					{
						//超过15s
						if(midHeatWaterCnt < HEAT_REWATER_5S_CNT)
						{
							midHeatWaterCnt++;
						}else
						{
							if(temp >= (setTemp-reWaterTemp))//温度低于4度就停止补水 
							{
								HEAT_TANK_IN_ON();//热罐进水阀开启补水//补水
								#if (QIANG_YING_DEVICE == 0)//俄罗斯机
								SODA_PUMP_ON();
								#endif	
							}else
							{
								HEAT_TANK_IN_OFF();//热罐进水阀关闭
								#if (QIANG_YING_DEVICE == 0)//俄罗斯机
								if((powerDownSave.get_water_status & (1<<1)) == 0 )	SODA_PUMP_OFF();//；冷水没有出水就关闭 增压泵//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水	
								#endif	
							}
						}
					}
				}
			}
			else
			{
				WaterFlag = 1;//不满过一次水
				midHeatWaterCnt = 0;
				HEAT_TANK_IN_OFF();//热罐进水阀关闭补水
				#if (QIANG_YING_DEVICE == 0)//俄罗斯机
				if((powerDownSave.get_water_status & (1<<1)) == 0 )	SODA_PUMP_OFF();//；冷水没有出水就关闭 增压泵//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水	
				#endif	
				print_debug("HEAT_TANK_IN_OFF \r\n");
			}
		}
		else
		{
			//			WaterFlag =0;//第一次补水恢复，  解决在热罐排空界面时去激活出现热罐不补水的BUG  不行直接在这里加造成A8的步进补水失效
				HEAT_TANK_IN_OFF();//热罐进水阀关闭补水
				#if (QIANG_YING_DEVICE == 0)//俄罗斯机
				if((powerDownSave.get_water_status & (1<<1)) == 0 )	SODA_PUMP_OFF();//；冷水没有出水就关闭 增压泵//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水	
				#endif	
//				print_debug("gLoabal.heatWaterEn is  false\r\n");
		}
	}
}
void OnCoolPro(void)//制冷处理 及补水
{
	static uint8_t 	coolState = 0;//制冷状态
	static uint16_t delayCnt = 0;
	static uint8_t 	firstFlag = 0;
	static uint8_t 	coolInterValFlag = 0;//正常工作过程为避免频繁启动，压缩机开启间隔时间3分钟
	static uint8_t 	coolInterValCnt  = 0;
	float temp = 		OnReadNTCtemper(NTC_COOL);
	float targetTemp;
//制冷温度
//	#if (QIANG_YING_DEVICE == 0)//俄罗斯广告机
//	powerDownSave.ice_temp_set = 10;//畅饮同逻辑
//	#else
//	powerDownSave.ice_temp_set = 2;
//	#endif

	targetTemp = powerDownSave.ice_temp_set;
	
	if(targetTemp <=2.0f )//如果设置为4℃实际按5℃执行
	targetTemp = COOL_MIX_TEMP;//最低温度
	{//冷罐制冷180000
#if(QIANG_YING_DEVICE == 1)		
	if (((HAL_GetTickMs()>180000) && (powerDownSave.run_state != 1)  &&  (OnGetIOStatus(TYPE_WATER_HIGH_COOL))  && (powerDownSave.alarm.bits.err_cool_water == 0))
		|| (powerDownSave.work_mode == 2))//开机3分钟后才能进入制冷 同时不是休眠模式 / 水检模式直接开启 //要高水位 因为冷罐是一直有水的
#else
	if (((HAL_GetTickMs()>180000) && (powerDownSave.run_state != 1) && (powerDownSave.alarm.bits.err_cool_ntc == 0) ) 
		|| (powerDownSave.work_mode == 2))//开机3分钟后才能进入制冷 同时不是休眠模式 / 水检模式直接开启 //要高水位 因为冷罐是一直有水的
#endif	
	{
		if(((powerDownSave.energy_set & 0x01) == 0x01) && (gLoabal.coolSetFlag == 1)  )//制冷开启同时允许制冷 
		{
			if(firstFlag == 0)
			{
				if(temp > targetTemp)
				{
					if(coolInterValFlag == 0)//间隔标志位为0
					{
						coolInterValCnt = 0;
						coolInterValFlag = 1;
						COOL_COMPRESSOR_ON();//压缩机开启
//						STIRRER_PUMP_ON();//开启搅拌泵
						powerDownSave.cool_state = 1;//制冷开启状态
						FAN_ON();//压缩机风扇也开启
						delayCnt = 0;
					}
				}
				else
				{
					COOL_COMPRESSOR_OFF();//压缩机开启
//					STIRRER_PUMP_OFF();//关闭搅拌泵
					powerDownSave.cool_state = 0;//制冷开启状态
					delayCnt = 240;//直接关闭
				}
				firstFlag = 1;
			}
			if(temp > (targetTemp + COOL_RE_TEMP)) //相差3度就制冷 
			{
				if((coolInterValFlag == 0) || (powerDownSave.work_mode == 2))//间隔标志位为0 如果是水检就直接进入
				{
					coolInterValCnt = 0;
					coolInterValFlag = 1;
					COOL_COMPRESSOR_ON();//压缩机开启
//					STIRRER_PUMP_ON();//开启搅拌泵
					powerDownSave.cool_state = 1;//制冷开启状态
					FAN_ON();//压缩机风扇也开启
					delayCnt = 0;
				}
			}
			else if(temp < targetTemp)
			{
				COOL_COMPRESSOR_OFF();//压缩机关闭
//				STIRRER_PUMP_OFF();//关闭搅拌泵
				powerDownSave.cool_state = 0;//制冷关闭状态
			}
		}
		else //没有开启就关闭
		{
			COOL_COMPRESSOR_OFF();//压缩机关闭
//			STIRRER_PUMP_OFF();//关闭搅拌泵
			powerDownSave.cool_state = 0;//制冷关闭状态
		}
		//风扇随压缩机同步启动，在压缩机关闭后风扇延时4分钟关闭。
		if(powerDownSave.cool_state == 0)//压缩机在关闭状态时
		{
			if(delayCnt < (4*60))//4分钟
			{
				delayCnt++;
			}else
			{
				FAN_OFF();//压缩机风扇也开启
			}
		}
	}
	else//没到时间就关闭
	{
		FAN_OFF();//压缩机风扇关闭
		COOL_COMPRESSOR_OFF();//压缩机关闭
//		STIRRER_PUMP_OFF();//关闭搅拌泵
		powerDownSave.cool_state = 0;//制冷关闭状态
	}
	//制冷状态 和制冷开关状态变化时就 上报
	if(coolState != powerDownSave.cool_state)
	{
		coolState = powerDownSave.cool_state;
		OnAddIOTList(ROM_ENERGY_SET_WR);  //冷水开关上报
		OnAddIOTList(ROM_COOL_STATE_WR);  //冷水状态上报
		IOTDataListTimeOutCnt = 3000;//延迟3s上报
	}
//正常工作过程为避免频繁启动，压缩机开启间隔时间3分钟	
		if((coolInterValCnt < HIGHWATER_DOWN_TIME_3MIN_CNT) && (powerDownSave.cool_state == 0))//3分钟//压缩机没有开启
		{
			coolInterValCnt++;
		}
		else 
		{
			if(coolInterValCnt >= HIGHWATER_DOWN_TIME_3MIN_CNT)
			{
				coolInterValFlag = 0;//时间到
			}
			if(powerDownSave.cool_state == 1)
			{
				coolInterValCnt  = 0;//计时清0
			}
		}
	}
#if (QIANG_YING_DEVICE == 1)	
	{//制冷补水
		if((powerDownSave.run_state != 1) && (powerDownSave.alarm.bits.err_cool_water == 0) && (gLoabal.coolWaterEn == 1))//不是休眠 冷罐也不是异常
		{
			if(OnGetIOStatus(TYPE_WATER_LOW_COOL))//低液位
			{
				COOL_WATER_IN_ON();//冷水进水阀
			}else if(OnGetIOStatus(TYPE_WATER_HIGH_COOL) == 0)//未到达高液位
			{
				COOL_WATER_IN_ON();//冷水进水阀
			}
			else if(OnGetIOStatus(TYPE_WATER_HIGH_COOL))//到达高液位
			{
				COOL_WATER_IN_OFF();//冷水进水阀
			}
		}
		else{//休眠就关闭
			COOL_WATER_IN_OFF();//冷水进水阀
		}
	}
#endif	
{//搅拌泵开启
		static uint16_t stirrer_cnt = 0;
		static uint16_t out_water_flag = 0;
		static uint16_t out_water_delay_cnt = 0;
//新逻辑
/*1.制冷开关开启，正在制冷时，搅拌泵一直运行。
2.当取苏打水和冷水时开启搅拌泵，取水结束后10s停止搅拌泵
3.制冷开关开启，没有制冷，也没有放苏打水和冰水，搅拌泵每3分钟运行20s；
4.制冷开关关闭时，搅拌泵停止工作。
*/		
		if(powerDownSave.cool_state == 1)//制冷状态就一直开启搅拌
		{
			STIRRER_PUMP_ON();
		}
		else
		{
			if((powerDownSave.get_water_status & ((1<<1) | (1<<5))) != 0X00)//位 0:待机 1:出冷水 2:出常温水 3：出热水预热 4：出热水 5:出苏打水
			{
				STIRRER_PUMP_ON();
				out_water_delay_cnt = 0;
				stirrer_cnt=0;
			}
			else
			{
				if(out_water_delay_cnt <10)
				out_water_delay_cnt++;
				else if(out_water_delay_cnt ==10)
				{
					STIRRER_PUMP_OFF();
					out_water_delay_cnt++;
				}
				else
				{
					stirrer_cnt++;
					if(stirrer_cnt < 3*60)
					{
						STIRRER_PUMP_OFF();
					}
					else if(stirrer_cnt < 3*60 +20)
					{
						STIRRER_PUMP_ON();
					}
					else
					{
						STIRRER_PUMP_OFF();
						stirrer_cnt = 0;
					}
				}
			}
			
		}
	}
}
void OnSodaInWaterPro(void)
{
	static uint8_t firstReWater=0;//首次补水 
	float temp = OnReadNTCtemper(NTC_COOL);
	float reWaterTemp = powerDownSave.ice_temp_set;
	if(reWaterTemp <= 4.0f)reWaterTemp= 4.0f;	  //低于4℃就要补水
	if(OnGetIOStatus(TYPE_WATER_HIGH_SODA) || (gLoabal.sodaSetFlag == 0))//到达高液位
	{
		if(OnGetIOStatus(TYPE_WATER_HIGH_SODA))firstReWater = 1;
		SODA_PUMP_OFF();
		SODA_WATER_IN_OFF();
	}
	else //没在高液位
	{
		if(firstReWater == 0)
		{
//			if(temp <= 2.8f)//冷罐小于等于3℃时开始补苏打罐水
			if(temp <= (reWaterTemp + 0.8f))
			{
				SODA_PUMP_ON();
				SODA_WATER_IN_ON();
			}
//			else if(temp >= 3.0f){//形成一个迟滞
			else if(temp >= (reWaterTemp + 1.0f)){//形成一个迟滞
				SODA_PUMP_OFF();
				SODA_WATER_IN_OFF();
			}
		}
		else{
				SODA_PUMP_ON();
				SODA_WATER_IN_ON();
		}
	}
	//补水超时 预留
}
#if 0
//void OnUVLightPro(void)//UV灯的处理
//{
//	  static uint8_t uvRunFlag =0 ;//0 代表关闭 1：代表开启
//		static uint8_t uvErrDelay =0 ;//0 代表关闭 1：代表开启
//		static uint8_t uvFirstFlag = 0;//是否首次到中水位
//	  static uint32_t uvFirst2HouerDelay=0; //首次上电中水位工作2小时
//		static uint32_t uv1HouerDelay=UV_1HOUR_CNT; //非首次上电高水位工作1小时  首次上电后这里的操作时直接跳过的
//	  static uint32_t uvTickDelay= (UV_20MIN_CNT+UV_10MIN_CNT); //纯水箱一直处于高水位，每隔20min启动一次LED模块（运行时间为10min）
//		if(uvFirstFlag == 0) //首次
//		{
//				if(OnGetIOStatus(TYPE_WATER_MID_FZ)==1)//上电纯水箱首次到中水位 要累计工作2小时
//				{
//					if(uvFirst2HouerDelay < UV_2HOUR_CNT) //2小时
//					{
//						UV_LIGHT_ON(); //uv灯开启
//						uvRunFlag = 1;
//						uvFirst2HouerDelay++;
//					}
//					else
//					{
//						uvFirstFlag = 1; //退出首次上电标志
//						UV_LIGHT_OFF(); //uv灯关闭
//						uvRunFlag = 0;
//					}
//				}
//				else  //热罐中水位以下就关闭
//				{
//				 UV_LIGHT_OFF(); //uv灯关闭
//					uvRunFlag = 0;
//				}
//		}
//		else
//		{
//			if(OnGetIOStatus(TYPE_WATER_MID_FZ)==1)//不是首次上电  同时达到中水位  要工作1小时
//			{
//				if(uv1HouerDelay < UV_1HOUR_CNT) //补水致高水位时先工作1小时
//				{
//					UV_LIGHT_ON(); //uv灯开启
//					uvRunFlag = 1;
//					uv1HouerDelay++;
//				}
//				else //纯水箱一直处于高水位，每隔20min启动一次LED模块（运行时间为10min）
//				{
//						if(uvTickDelay <UV_20MIN_CNT)//20min
//						{
//							uvTickDelay++;
//							UV_LIGHT_OFF();
//							uvRunFlag = 0;
//						}
//						else
//						{
//							if(uvTickDelay<(UV_10MIN_CNT+UV_20MIN_CNT)) //运行10min
//							{	
//								uvTickDelay++;
//								UV_LIGHT_ON();
//								uvRunFlag = 1;
//							}
//							else
//							{
//									uvTickDelay = 0; //重新倒计时
//							}
//						}
//				}
//			}
//			else //	高水位以下关闭
//			{
//				UV_LIGHT_OFF(); //uv灯关闭
//				uvRunFlag = 0;
//				uv1HouerDelay = 0;//计数清0
//				uvTickDelay = 0;//计数清0
//			}
//		}
////uv灯故障的判断		
//		if(uvRunFlag == 1)
//		{
//			  
//			if(OnReadADCDMAvalue(ADC_I_UV_LIGHT)>150 && (OnReadADCDMAvalue(ADC_I_UV_LIGHT)<3000) ) //大于1mA 小于30mA  实测0.32v 显示ADC 392   //不带负载就有ADC 97
//				{
//					
//						if(powerDownSave.alarm.bits.err_uv_light ==1 )
//						{
//							if(uvErrDelay <UV_5SEC_CNT) //5s
//							{
//								uvErrDelay++;
//							}
//							else
//							{
//								powerDownSave.alarm.bits.err_uv_light = 0;
//								uvErrDelay	= 0;
//								OnAddIOTList(ROM_ALARM_R);  
//								IOTDataListTimeOutCnt = 1;  //立即上报
//							}
//						}		
//				}
//				else
//				{
//					
//						if(powerDownSave.alarm.bits.err_uv_light ==0)
//						{
//							if(uvErrDelay <UV_5SEC_CNT) //5s
//							{
//								uvErrDelay++;
//							}
//							else
//							{
//									powerDownSave.alarm.bits.err_uv_light = 1;
//									uvErrDelay =0;
//									OnAddIOTList(ROM_ALARM_R);  
//									IOTDataListTimeOutCnt = 1;  //立即上报
//							}
//						}
//				}
//		}
//		else
//		{
//			uvErrDelay =0;
//		}
//		
//}
#endif
//void OnLetOutWaterPro(void)//一键排空处理
//{
//}
void OnNormalMode(void)//正常模式
{
//	powerDownSave.lock = 0;
	if (HAL_GetTickMs()>12000)  //12s后进入正常工作模式  同时初始化要成功//&&(DevInitFlag >21
	{ 
		if(powerDownSave.alarm.bits.err_make_water_fault == 1)//如果是制水异常
		{
				gLoabal.heatWaterEn = 0;//允许热罐补水	//已经在休眠和待机中赋值
				gLoabal.heatSetFlag = 0;//允许热罐加热
				gLoabal.coolSetFlag = 0;//制冷允许
				gLoabal.sodaSetFlag = 0;//允许苏打补水
		}

		
			//到期不锁机  继续进行
			if((powerDownSave.lock !=1) && (gLoabal.bindFlag == 1))//不是锁机的话 ,同时已经绑定
			{

//						if(powerDownSave.alarm.bits.err_water_leak != 1)//不是漏水
//						{
				
				#if (QIANG_YING_DEVICE == 1)
				switch(powerDownSave.cock_cnt)
				{
					case DEVICE_PRO:
					{
						OnHeatModePro();       //加热场景
						OnHeatReplenishPro();  //热罐补水及加热处理
						OnCoolPro();//制冷
						OnSodaInWaterPro();//苏打补水
						break;
					}
					case DEVICE_HEAT:
					{
						OnHeatModePro();       //加热场景
						OnHeatReplenishPro();  //热罐补水及加热处理
						
						break;
					}
					case DEVICE_COOL_HEAT:
					{
						OnHeatModePro();       //加热场景
						OnHeatReplenishPro();  //热罐补水及加热处理
						
						OnCoolPro();//制冷
						break;
					}
					case DEVICE_COOL:
					{
						OnCoolPro();//制冷
						break;
					}
					default:break;
				}
				
				#else
//			OnMakeWaterPro();      //制水的处理
				OnHeatModePro();       //加热场景
				OnHeatReplenishPro();  //热罐补水及加热处理
				OnCoolPro();//制冷
				#endif
//							OnUVLightPro();        //uv灯处理
//				OnLetOutWaterPro();    //一键排空处理
//						}
			}
			else //锁机模式
			{
				 HEAT_TANK_IN_OFF();//热罐电磁阀进水
				 OnEventSendValue(EVENT_TASK_APP,ACTION_WORK_WATER_FULL,0);
				 
				 HEAT_PIPE_CTRL_OFF(); //加热完成
				 powerDownSave.heat_state = 0;
				
				 COOL_COMPRESSOR_OFF();//压缩机关闭
				 powerDownSave.cool_state = 0;//制冷完成
			}
//			OnFilterPro(); //滤芯的处理
	}	
}
void OnTestMode(void)//测试模式
{
	if(HAL_GPIO_ReadPin(SW_HEAT_GPIO_Port, SW_HEAT_Pin) == 0)											//CN14 加热开关->加热模块 
	{
		HEAT_PIPE_CTRL_ON();	
		OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT, 	LED_MODE_SLOW, 0);	//冰水装饰灯控制 
		OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT, 		LED_MODE_SLOW, 0);	//热水装饰灯控制 
		OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT, 		LED_MODE_SLOW, 0);	//冰水照射灯灯控制
		OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT, 			LED_MODE_SLOW, 0);	//热水照射灯灯控制
	}
	else{
		HEAT_PIPE_CTRL_OFF();
		OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT, 	LED_MODE_OFF, 0);	//冰水装饰灯控制 
		OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT, 		LED_MODE_OFF, 0);	//热水装饰灯控制 
		OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT, 		LED_MODE_OFF, 0);	//冰水照射灯灯控制
		OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT, 			LED_MODE_OFF, 0);	//热水照射灯灯控制
	}
	
	if(HAL_GPIO_ReadPin(SW_COOL_GPIO_Port, SW_COOL_Pin) == 0)COOL_COMPRESSOR_ON();							//CN15 		制冷开关->制冷模块
	else COOL_COMPRESSOR_OFF();
	if(HAL_GPIO_ReadPin(SW_CO2_PRESSURE_GPIO_Port, SW_CO2_PRESSURE_Pin) == 0)SODA_PUMP_ON();		//CN20 		CO2高压开关->苏打泵
	else SODA_PUMP_OFF();
	if(OnReadADCDMAvalue(ADC_NTC_HEAT) >2500) HEAT_WATER_PUMP_ON();  														//CN21		热罐NTC上-> 热罐水泵									
	else HEAT_WATER_PUMP_OFF();
	if(OnReadADCDMAvalue(ADC_NTC_IN_WATER) >2500) FAN_ON();  																		//CN22		进水NTC-> 风扇									
	else FAN_OFF();
	if(OnReadADCDMAvalue(ADC_NTC_SODA) >2500) STIRRER_PUMP_ON();  															//CN25		苏打水NTC->搅拌泵									
	else STIRRER_PUMP_OFF();
	if(OnReadADCDMAvalue(ADC_NTC_HEAT_L) >2500) HEAT_WATER_OUT_ON();  													//CN26		热罐下NTC->热水出水电磁阀 CN13									
	else HEAT_WATER_OUT_OFF();
	if(OnReadADCDMAvalue(ADC_NTC_COOL) >2500) NULL_OUT_ON();  																	//CN29		冷罐NTC->	H_OV预留阀 CN34		NULL_OUT_ON						
	else NULL_OUT_OFF();		
	
	if(OnHalTdsADCAverValue(TDS_SODA_H) >3900)SODA_WATER_OUT_OFF();															//CN30		苏打罐tds->苏打出水电磁阀 
	else SODA_WATER_OUT_ON();
	
	if(OnHalTdsADCAverValue(TDS_COOL_L) >3900)HEAT_TANK_IN_OFF();																//CN31		冷罐低tds->	热罐进水电磁阀 CN27
	else HEAT_TANK_IN_ON();
	if(OnHalTdsADCAverValue(TDS_COOL_H) >3900)SODA_WATER_IN_OFF();															//CN31		冷罐高tds->	苏打进水电磁阀 CN23	
	else SODA_WATER_IN_ON();
	
	
	if(OnHalTdsADCAverValue(TDS_HEAT_L) >3900)COOL_WATER_IN_OFF();															//CN32		热罐低tds->	冷罐进水电磁阀 CN35	
	else COOL_WATER_IN_ON();
	if(OnHalTdsADCAverValue(TDS_HEAT_M) >3900)COOL_WATER_OUT_OFF();															//CN32		热罐中tds->冷水出水电磁阀 CN18	
	else COOL_WATER_OUT_ON();
	if(OnHalTdsADCAverValue(TDS_HEAT_H) >3900)NOR_WATER_OUT_OFF();															//CN32		热罐高tds->常温水出水电磁阀 CN28	 
	else NOR_WATER_OUT_ON();
	
	if(HAL_GPIO_ReadPin(CHECK_UV_GPIO_Port, CHECK_UV_Pin) == 0)UV_LIGHT_ON();										//				uc灯输入->uv灯
	else UV_LIGHT_OFF();
	
	powerDownSave.curState = WORK_STATUS_H1;//制水模式	
	  			
} 
#if (QIANG_YING_DEVICE == 1)
void OnWaterTest(void)//水检模式
{
//		static uint8_t lightRunStep = 0;//没有水时 灯带运行步骤
//		static uint8_t buf[TYPE_INPUT_MAX] = {0};				
		static uint16_t pureFullWaterCnt=0;//纯水水满时间 5s
//		static uint16_t coolReWaterCnt=0;//冷水出水时间 10s
//		static uint16_t heatReWaterCnt=0;//热水出水时间 10s
//		static uint16_t norReWaterCnt=0;//常温水出水时间 10s
		static uint8_t	heatFinishFlag = 0;
		static uint8_t 	coolFinishFlag = 0;
		static uint16_t errCnt = 0;//故障计时
		static uint8_t 	nomalStep=0;//0:未进入正常逻辑步骤 1:进入正常的逻辑步骤
		UNUSED(nomalStep);
//缺水的逻辑
		if(powerDownSave.curState != WORK_STATUS_F1)
		{
//第一步自检
			switch(gWaterTestStatus.bits.icheck_step)
			{
				case 0:	//纯水水补水
				{
					{//关闭闪烁
					OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_OFF, 0);//童锁
					OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_OFF, 0);//童锁1
					OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_OFF, 0);//童锁2
					OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_OFF, 0);//童锁3
					OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_OFF, 0);//热水
					OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_OFF, 0);//热水标志1
					OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_OFF, 0);//热水标志2                       
					OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_OFF, 0);//热水标志3                    
					OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_OFF, 0);//苏达                      
					OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_OFF, 0);//冷水                    
					OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_OFF, 0);//常温                      
					OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_OFF, 0);//冰水装饰灯控制 
					OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_OFF, 0);//热水装饰灯控制 
					OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_OFF, 0);//冰水照射灯灯控制 
					OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_OFF, 0);//热水照射灯灯控制	
					}
					if(powerDownSave.curState == WORK_STATUS_H2)//水满的时候出下水 流量计动作了才能进入下一步
					{
						//检测5s
						if(pureFullWaterCnt++ > PURE_FULL_WATER_5S_CNT)
						{
							pureFullWaterCnt = 0;
							if(powerDownSave.cock_cnt != DEVICE_HEAT)
							{
								gWaterTestStatus.bits.icheck_step++;
								OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_COOL_IN_WATER_CHECK);//冷罐补水
							}else
							{
								gWaterTestStatus.bits.icheck_step += 2;
								OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_HEAT_IN_WATER_CHECK);//热罐补水
							}
						}
						else
						{
							OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_PURE_IN_WATER_CHECK);//纯水补水
						}
					}
					else
					{
						if(errCnt++ > PURE_RE_WATER_5MIN_CNT)
						{
							errCnt = 0;
							OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_PURE_IN_ERR_WATER_CHECK);//补水超时告警   预留
							gWaterTestStatus.bits.icheck_step = 7;//异常关闭所有功能
						}
						else
						{
							OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_PURE_IN_WATER_CHECK);//纯水补水
						}
					}
					break;
				}
				case 1://冷罐补水
				{		
					{//关闭闪烁
					OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_OFF, 0);//童锁
					OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_OFF, 0);//童锁1
					OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_OFF, 0);//童锁2
					OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_OFF, 0);//童锁3
					OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_OFF, 0);//热水
					OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_OFF, 0);//热水标志1
					OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_OFF, 0);//热水标志2                       
					OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_OFF, 0);//热水标志3                    
					OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_OFF, 0);//苏达                      
					OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_OFF, 0);//冷水                    
					OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_OFF, 0);//常温                      
					OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_OFF, 0);//冰水装饰灯控制 
					OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_OFF, 0);//热水装饰灯控制 
					OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_OFF, 0);//冰水照射灯灯控制 
					OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_OFF, 0);//热水照射灯灯控制	
					}
					if(OnGetIOStatus(TYPE_WATER_HIGH_COOL) == 0)//未到达高液位
					{
						COOL_WATER_IN_ON();//冷水进水阀
						//超时预留
					}
					else if((OnGetIOStatus(TYPE_WATER_HIGH_COOL) == 1)  && (OnGetIOStatus(TYPE_WATER_LOW_COOL) == 0))//到达高液位  低液位以上
					{
						COOL_WATER_IN_OFF();//冷水进水阀
						errCnt=0;//超时清0
						gWaterTestStatus.bits.icheck_step++;
						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_HEAT_IN_WATER_CHECK);//热罐补水
					}
					errCnt++;//超时处理
					if(errCnt > COOL_RE_WATER_5MIN_CNT)//补冷水超过5Min就告警
					{
						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_COOL_IN_ERR_WATER_CHECK);//冷罐补水异常 
						errCnt = 0;
						gWaterTestStatus.bits.icheck_step = 7;//异常关闭所有功能
					}
					break;
				}	
				case 2://热罐补水界面
				{	
					{//关闭闪烁
					OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_OFF, 0);//童锁
					OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_OFF, 0);//童锁1
					OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_OFF, 0);//童锁2
					OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_OFF, 0);//童锁3
					OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_OFF, 0);//热水
					OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_OFF, 0);//热水标志1
					OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_OFF, 0);//热水标志2                       
					OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_OFF, 0);//热水标志3                    
					OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_OFF, 0);//苏达                      
					OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_OFF, 0);//冷水                    
					OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_OFF, 0);//常温                      
					OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_OFF, 0);//冰水装饰灯控制 
					OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_OFF, 0);//热水装饰灯控制 
					OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_OFF, 0);//冰水照射灯灯控制 
					OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_OFF, 0);//热水照射灯灯控制	
					}
					if(OnGetIOStatus(TYPE_WATER_MID_HEAT) == 1) //高液位停止补水
					{
						HEAT_TANK_IN_OFF();//热罐停止补水
						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_HEAT_COOL_ING_WATER_CHECK);//加热制冷
						gWaterTestStatus.bits.icheck_step++;
						errCnt=0;//超时清0
					}
					else //开始补水
					{
						HEAT_TANK_IN_ON();//热罐补水
					}
					errCnt++;//超时处理
					if(errCnt > HEAT_RE_WATER_20MIN_CNT)//补水超过20Min就告警
					{
						HEAT_TANK_IN_OFF();//热罐停止补水
						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_HEAT_IN_ERR_WATER_CHECK);//59热罐补水异常 
						errCnt = 0;
						gWaterTestStatus.bits.icheck_step = 7;//异常关闭所有功能
					}
					break;
				}
				case 3://加热制冷中 
				{
					{//关闭闪烁
					OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_OFF, 0);//童锁
					OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_OFF, 0);//童锁1
					OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_OFF, 0);//童锁2
					OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_OFF, 0);//童锁3
					OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_OFF, 0);//热水
					OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_OFF, 0);//热水标志1
					OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_OFF, 0);//热水标志2                       
					OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_OFF, 0);//热水标志3                    
					OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_OFF, 0);//苏达                      
					OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_OFF, 0);//冷水                    
					OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_OFF, 0);//常温                      
					OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_OFF, 0);//冰水装饰灯控制 
					OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_OFF, 0);//热水装饰灯控制 
					OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_OFF, 0);//冰水照射灯灯控制 
					OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_OFF, 0);//热水照射灯灯控制	
					}
					if(	(OnCheckTopName((uint8_t*)DevBLUEInfo.blueName, DEVICE_PRO,3) == 1) || (OnCheckTopName((uint8_t*)DevBLUEInfo.blueName, DEVICE_HEAT,3) == 1)\
						||(OnCheckTopName((uint8_t*)DevBLUEInfo.blueName, DEVICE_COOL_HEAT,3) == 1) || (OnCheckTopName((uint8_t*)DevBLUEInfo.blueName, DEVICE_COOL,3) == 1)
					)//质量水检就把温度改为65℃
					{
						powerDownSave.hot_temp_set = 65;//加热温度到65
						powerDownSave.ice_temp_set = 10;//冰水温度到10℃  //之前他们要求的进水温度-5℃ 但是进水温度在另外一个板子上很难获取
					}

					gLoabal.heatWaterEn =1;//允许热罐补水
					gLoabal.heatSetFlag =1;//允许热罐加热
					//开下加热制冷开关
					OnHeatReplenishPro();//加热处理
					if((powerDownSave.cock_cnt == DEVICE_PRO) || (powerDownSave.cock_cnt == DEVICE_COOL_HEAT) || (powerDownSave.cock_cnt == DEVICE_COOL) )//RPO款   2.冰热款 3.单冷款
					{
						gLoabal.coolSetFlag = 1;//制冷允许
						OnCoolPro();//制冷处理	
					}else//单热
					{
						gLoabal.coolSetFlag = 0;//制冷允许
						coolFinishFlag = 1; 		//直接制冷完成
					}
					if((OnReadNTCtemper(NTC_HEAT) >= powerDownSave.hot_temp_set) || ((OnReadNTCtemper(NTC_HEAT)>=gLoabal.Boiling_Point-5)))
					{
						heatFinishFlag = 1;//加热完成
					}	
					if(coolFinishFlag == 0)
					{
						if((OnReadNTCtemper(NTC_COOL) <= powerDownSave.ice_temp_set+0.5f) ||  (OnReadNTCtemper(NTC_COOL) <= COOL_MIX_TEMP)) //小于设定温度或者小于制冷最低温度
						{
							coolFinishFlag = 1;//制冷完成
						}
					}
					if((heatFinishFlag == 1) && (coolFinishFlag == 1))
					{
						//关闭加热制冷   
						HEAT_PIPE_CTRL_OFF();//加热关闭        
						COOL_COMPRESSOR_OFF();//制冷关闭
						if(powerDownSave.cock_cnt == DEVICE_PRO)
						{
							OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE_INT,IMAGE_SODA_IN_WATER_CHECK);//苏打罐补水
							gWaterTestStatus.bits.icheck_step++;
						}else
						{
							OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_MAIN_PAGE);//切换到主界面
							gWaterTestStatus.bits.icheck_step += 2;//直接进入正常模式
						}
						
						errCnt = 0;
						break;//退出
					}
					if((powerDownSave.heat_state == 1) || (powerDownSave.cool_state == 1))
					{
						errCnt++;//超时清0
						if(errCnt > HEAT_COOL_RUN_50MIN_CNT)//制热冷50min超时就告警
						{
							if(heatFinishFlag == 0)
							{
								OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_HEAT_ERR_WATER_CHECK);//加热异常
								gWaterTestStatus.bits.icheck_step = 7;//异常关闭所有功能
							}
							else if(coolFinishFlag == 0)
							{
								OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_COOL_ERR_WATER_CHECK);//制冷异常 
								gWaterTestStatus.bits.icheck_step = 7;//异常关闭所有功能
							}
						}
					}
					break;
				}
				case 4://苏打罐补水界面  //CO2压力开关检测 //气压计检测 合并
				{
					{//关闭闪烁
					OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_OFF, 0);//童锁
					OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_OFF, 0);//童锁1
					OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_OFF, 0);//童锁2
					OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_OFF, 0);//童锁3
					OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_OFF, 0);//热水
					OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_OFF, 0);//热水标志1
					OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_OFF, 0);//热水标志2                       
					OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_OFF, 0);//热水标志3                    
					OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_OFF, 0);//苏达                      
					OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_OFF, 0);//冷水                    
					OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_OFF, 0);//常温                      
					OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_OFF, 0);//冰水装饰灯控制 
					OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_OFF, 0);//热水装饰灯控制 
					OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_OFF, 0);//冰水照射灯灯控制 
					OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_OFF, 0);//热水照射灯灯控制	
					}
		
					if(OnGetIOStatus(TYPE_WATER_HIGH_SODA) == 1) //苏打高液位停止
					{
						SODA_PUMP_OFF();
						SODA_WATER_IN_OFF();
						
					}
					else //开始补水
					{
						SODA_PUMP_ON();
						SODA_WATER_IN_ON();
					}
					
					if((powerDownSave.alarm.bits.err_gas_sensor == 0) && (OnGetIOStatus(TYPE_PRESSURE_HIGH_CO2_SW) == 0) && (OnGetIOStatus(TYPE_WATER_HIGH_SODA) == 1))//高压开关断开就是有气   //有气是导通低电平 没有气就是断开高电平
					{
						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE_INT,IMAGE_MAIN_PAGE);//切换到主界面
						gWaterTestStatus.bits.icheck_step++;
						errCnt=0;//超时清0
					}
					
					errCnt++;//超时处理
					if(errCnt > HEAT_RE_WATER_20MIN_CNT)//补水超过20Min就告警
					{
						SODA_PUMP_OFF();
						SODA_WATER_IN_OFF();
						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_SODA_IN_ERR_WATER_CHECK);//苏打补水异常
						errCnt = 0;
						gWaterTestStatus.bits.icheck_step = 7;//异常关闭所有功能
					}
					break;
				}
				case 5://正常模式
				{
					//这时已经切到主界面
					nomalStep = 1;//进入到正常逻辑的步骤
					OnNormalMode();
					break;
				}
				case 7://阶段8 //关闭所有控制
				{
					OnAllOutOff();
					OnEventSendValue(EVENT_TASK_OUT_WATER,ACTION_OUT_WATER_ALL_OFF,0);//关闭跟出水有关的阀泵UV灯
					
					OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_SLOW, 0);//童锁
					OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_SLOW, 0);//童锁1
					OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_SLOW, 0);//童锁2
					OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_SLOW, 0);//童锁3
					OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_SLOW, 0);//热水
					OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_SLOW, 0);//热水标志1
					OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_SLOW, 0);//热水标志2                       
					OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_SLOW, 0);//热水标志3                    
					OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_SLOW, 0);//苏达                      
					OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_SLOW, 0);//冷水                    
					OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_SLOW, 0);//常温                      
					OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_SLOW, 0);//冰水装饰灯控制 
					OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_SLOW, 0);//热水装饰灯控制 
					OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_SLOW, 0);//冰水照射灯灯控制 
					OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_SLOW, 0);//热水照射灯灯控制	
					break;
				}
				default:
				break;
			}			
		}
		else //没有水
		{
			OnAllOutOff();
			OnEventSendValue(EVENT_TASK_OUT_WATER,ACTION_OUT_WATER_ALL_OFF,0);//关闭跟出水有关的阀泵UV灯
	
			OnLedSetMode(LED_TYPE_LOCK_LIGHT, 					LED_MODE_SLOW, 0);//童锁
			OnLedSetMode(LED_TYPE_LOCK_FLAG1, 					LED_MODE_SLOW, 0);//童锁1
			OnLedSetMode(LED_TYPE_LOCK_FLAG2, 					LED_MODE_SLOW, 0);//童锁2
			OnLedSetMode(LED_TYPE_LOCK_FLAG3, 					LED_MODE_SLOW, 0);//童锁3
			OnLedSetMode(LED_TYPE_HOT_LIGHT,						LED_MODE_SLOW, 0);//热水
			OnLedSetMode(LED_TYPE_HOT_FLAG1,						LED_MODE_SLOW, 0);//热水标志1
	    OnLedSetMode(LED_TYPE_HOT_FLAG2, 						LED_MODE_SLOW, 0);//热水标志2                       
	    OnLedSetMode(LED_TYPE_HOT_FLAG3, 						LED_MODE_SLOW, 0);//热水标志3                    
	    OnLedSetMode(LED_TYPE_SODA_LIGHT, 					LED_MODE_SLOW, 0);//苏达                      
	    OnLedSetMode(LED_TYPE_COOL_LIGHT, 					LED_MODE_SLOW, 0);//冷水                    
	    OnLedSetMode(LED_TYPE_WARM_LIGHT,						LED_MODE_SLOW, 0);//常温                      
			OnLedSetMode(LED_TYPE_COOL_DECORATE_LIGHT,	LED_MODE_SLOW, 0);//冰水装饰灯控制 
			OnLedSetMode(LED_TYPE_HOT_DECORATELIGHT,		LED_MODE_SLOW, 0);//热水装饰灯控制 
			OnLedSetMode(LED_TYPE_COOL_SHINE_LIGHT,			LED_MODE_SLOW, 0);//冰水照射灯灯控制 
			OnLedSetMode(LED_TYPE_HOT_SHINE_LIGHT,			LED_MODE_SLOW, 0);//热水照射灯灯控制	
		}
}
void OnLetOutPro(void)
{
	//常温水排空
	//冷水排空
	//热水排空
	//苏打排空
	//排空完成
	switch(gWaterTestStatus.bits.let_empty_step)
	{
		case 0://常温水热罐排空
		{
			OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_HEAT_NOR_LET_OUT);	//	107 //热罐常温排空
			NOR_WATER_OUT_ON();		//常温水进水阀
			
			COOL_WATER_OUT_OFF();     //冷水出水
			COOL_WATER_IN_OFF(); 			//冷水进水
			
			SODA_WATER_IN_OFF(); 		//苏打进水
			SODA_WATER_OUT_OFF();		//苏打出水
			SODA_PUMP_OFF();				//苏打泵
			
			HEAT_TANK_IN_ON();			//热水进水阀
			HEAT_WATER_OUT_ON();		//热罐出水
			
			SODA_LET_OUT_OFF();
			if(OnGetIOStatus(TYPE_WATER_LOW_HEAT) == 1) //低水位以下
			{
				HEAT_WATER_PUMP_OFF();		//热水泵
			}
			else
			{
				HEAT_WATER_PUMP_ON();		//热水泵
			}
			break;
		}
		case 1://冷水排空
		{
			OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_COOL_LET_OUT);	//108 //冷罐排空
			COOL_WATER_OUT_ON();     //冷水出水
			COOL_WATER_IN_ON(); 		//冷水进水
			
			SODA_WATER_IN_OFF(); 		//苏打进水
			SODA_WATER_OUT_OFF();		//苏打出水
			SODA_PUMP_OFF();				//苏打泵

			
			HEAT_WATER_PUMP_OFF();	//热水泵
			HEAT_TANK_IN_OFF();			//热水进水阀 
			HEAT_WATER_OUT_OFF();		//热罐出水
			
			NOR_WATER_OUT_OFF();		//常温水出水阀
			SODA_LET_OUT_OFF();
			break;
		}
		case 2://苏打
		{
			OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_SODA_LET_OUT);	//109 //苏打排空
			SODA_WATER_IN_ON(); 		//苏打进水
			SODA_WATER_OUT_ON();		//苏打出水
			SODA_PUMP_ON();					//苏打泵
			
			COOL_WATER_OUT_OFF();     //冷水出水
			COOL_WATER_IN_ON(); 			//冷水进水
			
			HEAT_WATER_PUMP_OFF();	//热水泵
			HEAT_TANK_IN_OFF();			//热水进水阀 
			HEAT_WATER_OUT_OFF();		//热罐出水
			
			NOR_WATER_OUT_OFF();		//常温水出水阀
			
			SODA_LET_OUT_ON();
			break;
		}
		case 3://排空结束
		{
			OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_FINISH_LET_OUT);	 //110排空完成 
			FAN_OFF();//风扇关闭
			OnAllOutOff();//关闭所有阀泵
			
			SODA_LET_OUT_OFF();
			break;
		}
		case 4://烫伤提示
		{
			OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_ALARM_PRE);	 //排空前预告警
			FAN_OFF();//风扇关闭
			OnAllOutOff();//关闭所有阀泵
			break;
		}
		default:
			gWaterTestStatus.bits.let_empty_step=3;
		break;
	}						
}
#else
void OnRussiaWaterTest(void)
{
	static uint16_t coolTankDelay = 0;//冷罐补水计时
	static uint16_t heatTankDelay = 0;//热罐补水计时
	static uint16_t heatOpenDelay = 0;//热罐加热超时
	static uint16_t coolOpenDelay = 0;//冷罐制冷超时
	static uint16_t uvCheckDelay 	= 0;
	if(powerDownSave.energy_set == 0)
	{
		OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_LET_OUT_PAGE);//排空界面
		gWaterTestStatus.bits.icheck_step=0;
		powerDownSave.style = 0;//0：短按出水，再次短按任意键（弹起）停止 1：长按出水，松手即停 2：点按取水，任意键停止；长按3s取水，松手停止
	}else{
		switch(gWaterTestStatus.bits.icheck_step)
		{
			case 0:
			{
				OnLedSetMode(LED_TYPE_HOT_LIGHT, 		LED_MODE_OFF, 0);//热水
				OnLedSetMode(LED_TYPE_COOL_LIGHT, 	LED_MODE_OFF, 0);//冷水
				OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_WATER_CHECK_AUTO_PAGE);//地址传过去
				if(HAL_GPIO_ReadPin(SW_FLOW_GPIO_Port, SW_FLOW_Pin) == 0)		//水流开关动作就进入下一步
				{
					COOL_WATER_IN_OFF();//冷罐进水阀
					COOL_WATER_OUT_OFF();
					SODA_WATER_OUT_OFF();//苏打关 通电就是关  也就是 冷水排气的阀
					SODA_PUMP_OFF();//就是增压泵
					gWaterTestStatus.bits.icheck_step = 1;
				}else{
					if(coolTankDelay < CHECK_RUS_10_MIN)
					{
						coolTankDelay++;
						SODA_WATER_OUT_OFF();//实际是冷水出气阀关闭 
						COOL_WATER_OUT_ON();//冷罐出水阀开启
						COOL_WATER_IN_ON();//冷水进水开
						SODA_PUMP_ON();//增压泵
					}else
					{
						SODA_WATER_OUT_OFF();//实际是冷水出气阀关闭 
						COOL_WATER_OUT_OFF();//冷罐出水阀开启
						COOL_WATER_IN_OFF();//冷水进水开
						SODA_PUMP_OFF();//增压泵
						gWaterTestStatus.bits.err_cool_tank_timeout = 1;//冷罐补水超时
					}
					
				}
				break;
			}
			case 1:
			{
				if(OnGetIOStatus(TYPE_WATER_MID_HEAT) == 1)//高水位
				{
					heatTankDelay = 0;
					SODA_PUMP_OFF();
					HEAT_WATER_OUT_OFF();	
					gWaterTestStatus.bits.icheck_step = 2;
				}else{
					if(heatTankDelay < CHECK_RUS_10_MIN)
					{
						heatTankDelay++;
						SODA_PUMP_ON();
						HEAT_TANK_IN_ON();
					}
					else
					{
						SODA_PUMP_OFF();
						HEAT_TANK_IN_OFF();	
						gWaterTestStatus.bits.err_heat_tank_timeout = 1;//热罐补水超时
					}
				}
				break;
			}
			case 2:
			{
				static uint16_t uvFlag = 0;
				uvCheckDelay++;
				if(uvCheckDelay < CNT_3S_KEEP)//检测在3s内
				{
					SODA_WATER_OUT_ON();//实际是冷水出气阀关闭 
					COOL_WATER_OUT_ON();//冷罐出水阀开启
					COOL_WATER_IN_ON();//冷水进水开
					SODA_PUMP_ON();//增压泵
				}
				else if(uvCheckDelay < CNT_5S_KEEP)//检测在6s内
				{
					UV_LIGHT_ON(); //uv灯开启
					SODA_WATER_OUT_ON();//实际是冷水出气阀关闭 
					COOL_WATER_OUT_ON();//冷罐出水阀开启
					COOL_WATER_IN_ON();//冷水进水开
					SODA_PUMP_ON();//增压泵
					if(HAL_GPIO_ReadPin(CHECK_UV_GPIO_Port, CHECK_UV_Pin) == 1)//低电平代表故障 针对杰生 UV灯
					{
							uvFlag = 1;
					}
				}
				else
				{
					if(uvFlag == 0)//10s 后进入主界面
					{
						gWaterTestStatus.bits.err_uv_check = 1;//进入告警界面  预留
					}else
					{
						gWaterTestStatus.bits.icheck_step = 3;
					}
					UV_LIGHT_OFF(); //uv灯开启
					SODA_WATER_OUT_OFF();//实际是冷水出气阀关闭 
					COOL_WATER_OUT_OFF();//冷罐出水阀开启
					COOL_WATER_IN_OFF();//冷水进水开
					SODA_PUMP_OFF();//增压泵
				}
				break;
			}
			case 3:
			{
				static uint8_t coolFinish =0;
				static uint8_t heatFinish = 0;
				uint16_t hotTemp 	= OnReadNTCtemper(NTC_HEAT);
				uint16_t coolTemp = OnReadNTCtemper(NTC_COOL);
				OnOutwaterLEDdisplay();//指示灯显示
				if(OnGetIOStatus(TYPE_WATER_MID_HEAT) == 1)//高水位//防止干烧
				{
					SODA_PUMP_OFF();
					HEAT_WATER_OUT_OFF();	
				}
				else
				{
						SODA_PUMP_ON();
						HEAT_TANK_IN_ON();
				}
				if((powerDownSave.energy_set & 0x02) == 0x02)//热胆开启
				{
					if(hotTemp <=85)
					{
						if(heatOpenDelay < CHECK_RUS_20_MIN)
						{
							heatOpenDelay++;
							HEAT_PIPE_CTRL_ON();
						}
						else
						{
	//						heatOpenDelay = 0;
							HEAT_PIPE_CTRL_OFF();
							gWaterTestStatus.bits.err_heat_timeout = 1;//加热超时
						}
					}else{
						heatFinish = 1;
						HEAT_PIPE_CTRL_OFF();
					}
				}
				if((powerDownSave.energy_set & 0x01) == 0x01)//冷胆开启
				{
					if(coolTemp >= 10)
					{
						if(coolOpenDelay < CHECK_RUS_80_MIN)
						{
							coolOpenDelay++;
							COOL_COMPRESSOR_ON();
							FAN_ON();
						}
						else
						{
							COOL_COMPRESSOR_OFF();
							FAN_OFF();
							gWaterTestStatus.bits.err_cool_timeout = 1;//制冷超时
						}
					}else{
						coolFinish = 1;
						COOL_COMPRESSOR_OFF();
						FAN_OFF();
					}
				}
				if((coolFinish == 1) && (heatFinish == 1) && (powerDownSave.alarm.bits.err_gas_sensor == 0))
				{
					gWaterTestStatus.bits.icheck_step = 4;
				
				}
				break;
			}
			case 4:
			{
				powerDownSave.style = 0;//0：短按出水，再次短按任意键（弹起）停止 1：长按出水，松手即停 2：点按取水，任意键停止；长按3s取水，松手停止
				OnNormalMode();//正常模式
				OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_CHANGE,IMAGE_MAIN_PAGE);//主界面
				break;
			}
			default:break;
		}

	
	}
	
}
#endif

void OnTaskInputCallBack(TypeEventFunPara *para)  //1000ms
{
		  OnHalInCheck();//输入量的检查
			switch(powerDownSave.work_mode)
			{
				case 0: //正常模式
				{
					OnNormalMode();
					break;
				}
				case 1: //测试模式
				{
					OnTestMode();
					break;
				}		
					case 2: //水检模式
					{
#if (QIANG_YING_DEVICE == 1)
							//进入水检界面
			//					OnSetBackGround(IMAGE_WATER_CHECK,1); //水检模式界面
			//					if(gWaterTestStatus.bits.icheck_step < 7)//第8阶段就是 质量的正常进入用户模式
			//					{
			//						if(powerDownSave.cock_cnt == 0)
			//						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_WATER_CHECK_MODE, 0);	//水检模式界面
			//						else
			//						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_WATER_CHECK_MODE_4POS, 0);	//水检模式界面	
			//					}else
			//					{
			//						OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_WATER_NORMAL_MODE, 0);	//水检模式中的正常制水
			//					}
//						if(powerDownSave.cock_cnt == DEVICE_A8){
//								OnWaterTestA8();
//						}
//						else{
								OnWaterTest();
//						}

						//如果是质量水检时下发一键排空就直接进入水检结束 因为质量水检 只发送一键排空不发送水检结束
						if(((OnCheckTopName((uint8_t* )DevBLUEInfo.blueName,DEVICE_PRO,3)) || (OnCheckTopName((uint8_t* )DevBLUEInfo.blueName,DEVICE_HEAT,3)) || (OnCheckTopName((uint8_t* )DevBLUEInfo.blueName,DEVICE_COOL_HEAT,3))\
							||(OnCheckTopName((uint8_t* )DevBLUEInfo.blueName,DEVICE_COOL,3)))&&(powerDownSave.letout_hot_tank_water ==1))  //如果是蓝牙改名后的就判断是质检的水检  同时是一键排空
						{
							 powerDownSave.work_mode = 4;  //水检结束
			//						gWaterTestStatus.bits.let_empty_step = 0;//排空指令清0
							 OnAllOutOff();//关闭所有阀和泵
			//						 gWaterTestStatus.bits.icheck_mode = 1;//手动检		否则不能出水
							 gRenameFlag = 1;//蓝牙改名直接设置成成功
						}
#else
						OnRussiaWaterTest();
#endif
						break;
					}
//				case 3: //气检模式
//				{
//					break;
//				}
				case 4: //水检结束
				{
#if (QIANG_YING_DEVICE == 1)
					HEAT_PIPE_CTRL_OFF();  //热罐加热控制         	
					STIRRER_PUMP_OFF();    //搅拌泵               	       
					UV_LIGHT_OFF(); 			
					//制冷风扇  这里风扇先不关 防止制冷出问题					            
					FAN_OFF();            					
					COOL_COMPRESSOR_OFF();
					OnLetOutPro();
#endif
					break;
				}
				default:
					break;
			}
			
}

uint8_t OnGetFirstHeatStatus(void) //获取一次加热到95的状态
{
		return firstHeatFlag;

}
#if (QIANG_YING_DEVICE == 1)
//开机自检程序1s运行一次
uint16_t  OnProgramSelfCheck(void) //100ms
{
	if(DevInitFlag >=101) 
	return 0;
	if((powerDownSave.work_mode == 1) && (DevInitFlag >3)  ) //如果是测试模式就跳过10s冲洗 
	{
		DevInitFlag = 100;
	}
	switch(DevInitFlag)
	{
		case 1:  //2s后
		{
			powerDownSave.curState = WORK_STATUS_H2;//水满
			break;
		}
		case 2:
		{
			if(powerDownSave.lock ==1)//锁机 
			{
				
			}
			else if(powerDownSave.lock ==0)//解锁
			{
					OnEventSendValue(EVENT_TASK_APP, ACTION_H1_10S, 0);//强制冲洗
			}
			else//强提醒
			{
				OnEventSendValue(EVENT_TASK_APP, ACTION_H1_10S, 0);//强制冲洗
			}
			break;
		}
		case 	50://7s后			
		{			
				if(powerDownSave.lock == 1) //锁机界面
				{
					if((powerDownSave.active1 == 0) || (powerDownSave.active2 == 0) || (powerDownSave.active3 == 0))//首次激活
					{
							OnSetBackGround(IMAGE_ACTIVE_PAGE,1); //首次激活界面
					}
					else
					{
							OnSetBackGround(IMAGE_RENT_CLOCK,0); //锁机界面
					}
				}
				else if(powerDownSave.bind == 0) //没有绑定
				{
						OnRecoverBackGround(IMAGE_BIND_PAGE,1); //绑定界面
				}
				else
				{	
						if((powerDownSave.actFilter3ActiveFlag == 1) || (powerDownSave.cmrFilter2ActiveFlag == 1) || (powerDownSave.fpcFilter1ActiveFlag == 1))// 如果管路清洗未未完成就退出 开机后也需要再次进行管路清洗 也就是冲洗进行180s冲洗 然后在120s管路清洗
						{
							OnEventSendValue(EVENT_TASK_SCREEN_DATA,ACTION_SCREEN_WASH_180,0);	//屏幕冲洗180s
							OnEventSendValue(EVENT_TASK_APP,ACTION_KEY_WASH_END,0);//结束冲洗
							OnEventSendValue(EVENT_TASK_APP,ACTION_H1_180S,0);
						}
						else
						{
							if(powerDownSave.update_save == 2)//在主界面 重启后直接跳转到主界面
							{
									OnSetBackGround(IMAGE_MAIN_PAGE,1); //主界面
							}
							else
							{
									OnSetBackGround(IMAGE_MAKE_WATER_PAGE,1); //制水界面界面
									OnSetSysCartoon(ADDR_MAKE_WATER_ING,1);//设置变量图片
							}
						}
				}
//				powerDownSave.cock_cnt = 0;
//				OnRecoverBackGround(IMAGE_MAIN_PAGE,1);
			break;			
		}
		case 100: //12s后   
		{
		
		}
		break;
		default:
		break;
	}
//	DigitalScan();
	if(DevInitFlag <101)
	DevInitFlag++;	
	return 1;
}
#endif

